fix(utils): #4709 fix boolean fields incorrectly set to {} in oneOf/anyOf schemas #4710
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #4709: Boolean fields now remain undefined or get proper defaults when switching between schema variants with
mergeDefaultsIntoFormData
set touseDefaultIfFormDataUndefined
Reasons for making this change
This PR fixes a critical bug where boolean fields in discriminated unions (oneOf/anyOf) were incorrectly being set to empty objects
{}
instead of remainingundefined
or receiving proper boolean default values when users switch between schema options.Problem:
mergeDefaultsIntoFormData: "useDefaultIfFormDataUndefined"
{}
Solution:
Updated the form data merging logic in
@rjsf/utils
to properly handle boolean field types when sanitizing data for new schemas, ensuring undefined boolean fields remain undefined or get appropriate default values instead of being converted to empty objects.Testing:
Fixes #4709
Checklist
[ ] I'm updating documentation[ ] I've checked the rendering of the Markdown text I've addednpx nx run-many --target=build --exclude=@rjsf/docs && npm run test:update
to update snapshots, if needed.[ ] I've updated docs if needed[ ] I'm adding a new feature[ ] I've updated the playground with an example use of the feature